import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import json
from PIL import Image

# 设置页面标题
st.title("Streamlit 功能展示")

# 示例 DataFrame 数据
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'San Francisco', 'Los Angeles']
}
df = pd.DataFrame(data)

# st.dataframe 用于展示可交互的表格数据
st.header("可排序与过滤的表格")
st.dataframe(df, width=600, height=300)

# st.table 用于展示静态表格数据
st.header("静态表格")
st.table(df)

# st.json 展示JSON数据
st.header("JSON 数据展示")
json_data = {
    "name": "John Doe",
    "age": 30,
    "city": "New York",
    "details": {
        "hobbies": ["reading", "cycling"],
        "work": "engineer"
    }
}
st.json(json_data)

# st.pyplot 用于展示matplotlib图表
st.header("matplotlib 图表")
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
plt.figure(figsize=(5, 3))
plt.plot(x, y, 'r-', linewidth=2)
st.pyplot(plt)

# st.map 显示地图及数据点（假设数据包含经纬度）
st.header("地图展示")
locations = pd.DataFrame(
    np.random.randn(100, 2) * 100 + [37.7749, -122.4194],  # 假设的旧金山经纬度
    columns=['lat', 'lon'])
st.map(locations)  # 显示地图

# # st.image 用于显示图片
# st.header("图片展示")
# image = Image.open('your_image_path.jpg')  # 请替换为你的图片路径
# st.image(image, caption='示例图片', use_column_width=True)
#
# # st.video 播放视频
# st.header("视频播放")
# video_file = open('your_video_path.mp4', 'rb')  # 请替换为你的视频路径
# video_bytes = video_file.read()
# st.video(video_bytes)
